<chapter xml:id="stdint.h">
<title><tt>__vic/stdint.h</tt></title>

<p><tt>&lt;stdint.h></tt> из ISO C99 для C++98. Начиная с C++11 - просто
перенаправление на <tt>&lt;cstdint></tt>.</p>
<p>Дополнительно содержит некоторые метафункции для шаблонного
метапрограммирования.</p>


<chapter xml:id="intN_t">
<title>Целые с точной длиной</title>

<p>Гарантируется, что следующие типы доступны в <b>глобальном пространстве
имён</b>:</p>
<list style="bulleted">
    <item><tt>int8_t</tt></item>
    <item><tt>int16_t</tt></item>
    <item><tt>int32_t</tt></item>
    <item><tt>int64_t</tt></item>
    <item><tt>uint8_t</tt></item>
    <item><tt>uint16_t</tt></item>
    <item><tt>uint32_t</tt></item>
    <item><tt>uint64_t</tt></item>
</list>

</chapter>


<chapter xml:id="int_leastN_t">
<title>Целые с минимальной длиной</title>

<p>Гарантируется, что следующие типы доступны в <b>глобальном пространстве
имён</b>:</p>
<list style="bulleted">
    <item><tt>int_least8_t</tt></item>
    <item><tt>int_least16_t</tt></item>
    <item><tt>int_least32_t</tt></item>
    <item><tt>int_least64_t</tt></item>
    <item><tt>uint_least8_t</tt></item>
    <item><tt>uint_least16_t</tt></item>
    <item><tt>uint_least32_t</tt></item>
    <item><tt>uint_least64_t</tt></item>
</list>

</chapter>


<chapter xml:id="int_fastN_t">
<title>Быстрейшие целые с минимальной длиной</title>

<p>Гарантируется, что следующие типы доступны в <b>глобальном пространстве
имён</b>:</p>
<list style="bulleted">
    <item><tt>int_fast8_t</tt></item>
    <item><tt>int_fast16_t</tt></item>
    <item><tt>int_fast32_t</tt></item>
    <item><tt>int_fast64_t</tt></item>
    <item><tt>uint_fast8_t</tt></item>
    <item><tt>uint_fast16_t</tt></item>
    <item><tt>uint_fast32_t</tt></item>
    <item><tt>uint_fast64_t</tt></item>
</list>

</chapter>


<chapter xml:id="intmax_t">
<title>Целые наибольшего размера</title>

<p>Гарантируется, что следующие типы доступны в <b>глобальном пространстве
имён</b>:</p>
<list style="bulleted">
    <item><tt>intmax_t</tt></item>
    <item><tt>uintmax_t</tt></item>
</list>

</chapter>


<chapter xml:id="intptr_t">
<title>Целые, вмещающие указатели на объекты</title>

<p>Гарантируется, что следующие типы доступны в <b>глобальном пространстве
имён</b>:</p>
<list style="bulleted">
    <item><tt>intptr_t</tt></item>
    <item><tt>uintptr_t</tt></item>
</list>

</chapter>


<chapter xml:id="int_exactly_bytes">
<title><tt>int_exactly_bytes&lt;></tt>, <tt>uint_exactly_bytes&lt;></tt></title>

<code-block lang="C++"><![CDATA[
template<unsigned SizeInBytes>
struct int_exactly_bytes
{
    using type = ]]><nt>&lt;signed-integer-type-of-the-corresponding-size></nt><![CDATA[;
};

template<unsigned SizeInBytes>
struct uint_exactly_bytes
{
    using type = ]]><nt>&lt;unsigned-integer-type-of-the-corresponding-size></nt><![CDATA[;
};

// BEGIN C++11
template<unsigned N>
using int_exact_bytes = typename int_exactly_bytes<N>::type;

template<unsigned N>
using uint_exact_bytes = typename uint_exactly_bytes<N>::type;
// END C++11
]]></code-block>

<p>Метафункции, возвращающие знаковый/беззнаковый целый тип для указанного
размера в байтах. Более короткие псевдонимы доступны в режиме C++11 и выше.
Допустимые значения для <tt>SizeInBytes</tt>: <tt>1</tt>, <tt>2</tt>,
<tt>4</tt>, <tt>8</tt>.</p>

<section><title>Пример</title>
<code-block lang="C++"><![CDATA[
typedef __vic::int_exactly_bytes< sizeof(void *) >::type my_intptr_t;
// or in C++11
using my_intptr_t = __vic::int_exact_bytes< sizeof(void *) >
assert( sizeof(my_intptr) == sizeof(intptr_t) );
]]></code-block>
</section>

</chapter>


</chapter>
